home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #086 (1990-07)(Amiga User Group Deutschland e.V.).zip / Franz PD Disk #086 (1990-07)(Amiga User Group Deutschland e.V.).adf / Basic_Hilfsprogramme / Amiga-Basic / filelister1 < prev    next >
Text File  |  1989-07-02  |  4KB  |  144 lines

  1. ' *****************************************
  2. ' * Filelister entspricht dem FILE-Befehl *
  3. ' * Die Dateien können im Programm weiter-*
  4. ' * verwendet werden. Z. Bsp. fr einen   *
  5. ' * Disksorterprogramm.                   *
  6. ' *     (c) 10.6.1990 by Henry König      *
  7. ' *     Bornheide 71, 2000 Hamburg 53     *
  8. ' *****************************************
  9. '
  10. DIM ordner$(100),datei$(300)
  11. DECLARE FUNCTION Examine& LIBRARY
  12. DECLARE FUNCTION ExNext& LIBRARY
  13. DECLARE FUNCTION Lock& LIBRARY
  14. DECLARE FUNCTION AllocMem& LIBRARY
  15. LIBRARY "exec.library"
  16. LIBRARY "dos.library"
  17.  
  18. CLS
  19. start:
  20. INPUT " Ausgabe für welches Laufwerk oder Directory: ";d$
  21. d$=d$+CHR$(0)
  22. dzaehler=-1                   ' Zähler fr Disknamen und Directories
  23. filezaehler=0                 ' Zähler löschen
  24. '
  25. hallo&=-2                     ' -2 = lesen, -1 = schreiben
  26. bytes&=252
  27. lock2&=Lock&(SADD(d$),hallo&) ' Zeiger auf aktuelles Laufwerk
  28. opt&=2^1+2^16
  29. info&=AllocMem&(bytes&,opt&)
  30. suc&=Examine&(lock2&,info&)
  31. WHILE suc&<>0
  32.   GOSUB einlesen              ' Directories und Dateien einlesen
  33. WEND
  34. GOSUB anzeigen                ' alle Einträge anzeigen
  35. GOTO start
  36. '
  37. einlesen:
  38. ordner&=info&+8
  39. prot&=PEEKL(info&+116)        ' Schutzbits
  40. type&=PEEKL(info&+120)        ' Dateityp
  41. size&=PEEKL(info&+124)        ' Dateigröße in Bytes
  42. blks&=PEEKL(info&+128)        ' Anzahl der belegten Blöcke
  43. ordner$=""
  44. FOR search%=0 TO 29           ' Directory- oder Filenamen feststellen
  45.   check=PEEK(ordner&+search%)
  46.   IF check<>0 THEN            ' ASCII-Zeichen?
  47.     ordner$=ordner$+CHR$(check)' ja, dann Zeichen uebernehmen
  48.   ELSE                        ' nein, dann
  49.     search%=29                ' Schleife abrechen
  50.   END IF
  51. NEXT search%
  52. IF type&<0 THEN               ' Datei
  53.   type$="File"
  54.   filezaehler=filezaehler+1
  55.   datei$(filezaehler)=LEFT$(ordner$+SPACE$(31),31)
  56.   datei$(filezaehler)=datei$(filezaehler)+RIGHT$(SPACE$(6)+STR$(size&),6)
  57.   GOSUB schutzbits            ' Schutzbits feststellen
  58.   datei$(filezaehler)=datei$(filezaehler)+" "+prot$
  59.    GOSUB comment              ' auf Kommentar pruefen
  60.   datei$(filezaehler)=datei$(filezaehler)+" "+comm$
  61. ELSE                          ' Directory
  62.   type$="Dir"
  63.   dzaehler=dzaehler+1
  64.   ordner$(dzaehler)=LEFT$(ordner$+SPACE$(31),31)
  65. END IF
  66. suc&=ExNext&(lock2&,info&)
  67. IF suc&<>0 THEN
  68.   PRINT ordner$;" = ";type$;"."
  69. END IF
  70. RETURN
  71. anzeigen:                     ' Alle Directories anzeigen
  72. PRINT STRING$(77,"-")
  73. PRINT "Inhalt des Laufwerks: ";ordner$(0)
  74. PRINT STRING$(77,"-")
  75. PRINT TAB(25);"D i r e c t o r i e s"
  76. PRINT STRING$(77,"-")
  77. FOR i=1 TO dzaehler
  78. PRINT ordner$(i)
  79. NEXT i
  80. PRINT STRING$(77,"-")
  81. PRINT TAB(30);"D a t e i e n"
  82. PRINT STRING$(77,"-")
  83. FOR i=1 TO filezaehler        ' Alle Dateien anzeigen
  84. PRINT datei$(i)
  85. NEXT i
  86. RETURN
  87. comment:                      ' Dateikommentare feststellen
  88. FOR search%=0 TO 79
  89. check=PEEK(info&+144+search%)  ' Kommentar feststellen
  90. IF check<>0 THEN
  91. check$=check$+CHR$(check)
  92. ELSE
  93. search%=79
  94. END IF
  95. NEXT search%
  96. comm$=check$                  ' Kommentareintrag bernehmen
  97. check$=""
  98. RETURN
  99. schutzbits:
  100. prot$=""
  101. IF prot&<>0 THEN              ' Schreibschutzbits auswerten
  102. IF (prot& AND 2^4)<>0 THEN
  103. prot$=prot$+"-"
  104. ELSE
  105. prot$=prot$+"H"
  106. END IF
  107. IF (prot& AND 2^4)<>0 THEN
  108. prot$=prot$+"-"
  109. ELSE
  110. prot$=prot$+"S"
  111. END IF
  112. IF (prot& AND 2^4)<>0 THEN
  113. prot$=prot$+"-"
  114. ELSE
  115. prot$=prot$+"P"
  116. END IF
  117. IF (prot& AND 2^4)<>0 THEN
  118. prot$=prot$+"-"
  119. ELSE
  120. prot$=prot$+"A"
  121. END IF
  122. IF (prot& AND 2^3)<>0 THEN
  123. prot$=prot$+"-"
  124. ELSE
  125. prot$=prot$+"R"
  126. END IF
  127. IF (prot& AND 2^2)<>0 THEN
  128. prot$=prot$+"-"
  129. ELSE
  130. prot$=prot$+"W"
  131. END IF
  132. IF (prot& AND 2^1)<>0 THEN
  133. prot$=prot$+"-"
  134. ELSE
  135. prot$=prot$+"E"
  136. END IF
  137. IF (prot& AND 2^0)<>0 THEN
  138. prot$=prot$+"-"
  139. ELSE
  140. prot$=prot$+"D"
  141. END IF
  142. END IF
  143. RETURN
  144.